]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
ibusCandidatePopup: Make candidates reactive to pointer clicks
authorRui Matos <tiagomatos@gmail.com>
Wed, 16 Jan 2013 23:21:14 +0000 (00:21 +0100)
committerRui Matos <tiagomatos@gmail.com>
Thu, 14 Feb 2013 23:26:47 +0000 (00:26 +0100)
Allow for candidates to be selected by clicking on them.

https://bugzilla.gnome.org/show_bug.cgi?id=691902

data/theme/gnome-shell.css
js/ui/ibusCandidatePopup.js

index 8e5bdc1a8af2de04287631402eb94a5fa689b4b9..8fca629fdfd3d390464a28d71f046d02f491703f 100644 (file)
@@ -2126,6 +2126,10 @@ StScrollBar StButton#vhandle:active {
     background-color: rgba(255,255,255,0.2);
 }
 
+.candidate-box:hover {
+    border-radius: 4px;
+    background-color: rgba(255,255,255,0.1);
+}
 .candidate-page-button-box {
     height: 2em;
     width: 80px;
index bfebf168ac0f297fa3d3bf61d23381e126741cab..bbc65a0f9c324dd7644ffa48633974bfce27bde8 100644 (file)
@@ -19,13 +19,20 @@ const CandidateArea = new Lang.Class({
                                         visible: false });
         this._candidateBoxes = [];
         for (let i = 0; i < MAX_CANDIDATES_PER_PAGE; ++i) {
-            let box = new St.BoxLayout({ style_class: 'candidate-box' });
+            let box = new St.BoxLayout({ style_class: 'candidate-box',
+                                         reactive: true,
+                                         track_hover: true });
             box._indexLabel = new St.Label({ style_class: 'candidate-index' });
             box._candidateLabel = new St.Label({ style_class: 'candidate-label' });
             box.add(box._indexLabel, { y_fill: false });
             box.add(box._candidateLabel, { y_fill: false });
             this._candidateBoxes.push(box);
             this.actor.add(box);
+
+            let j = i;
+            box.connect('button-release-event', Lang.bind(this, function(actor, event) {
+                this.emit('candidate-clicked', j, event.get_button(), event.get_state());
+            }));
         }
 
         this._buttonBox = new St.BoxLayout({ style_class: 'candidate-page-button-box' });
@@ -136,6 +143,9 @@ const CandidatePopup = new Lang.Class({
         this._candidateArea.connect('next-page', Lang.bind(this, function() {
             this._panelService.page_down();
         }));
+        this._candidateArea.connect('candidate-clicked', Lang.bind(this, function(ca, index, button, state) {
+            this._panelService.candidate_clicked(index, button, state);
+        }));
 
         this._panelService = null;
     },